package cn.tedu.design;/**
 * @Author 金帮嘉诚 @Date 2021-06-24 星期四 19:17
 */
/*本类用于测试单例设计模式实现方案一：饿汉式*/

/**
 * 知识点
 * 静态变量和方法
 * 调用前已被创建
 */
public class Singleton1 {
    public static void main(String[] args) {
        MySingle single1 = MySingle.getSingle();//
        MySingle single2 = MySingle.getSingle();

        System.out.println(single1 == single2);
        System.out.println(single1);
        System.out.println(single2);
    }
}

class MySingle {
    /*思考：在构造方法与对象均私有化后，我们需要公共的全局访问点来获取本类对象
     * 但是，我们如何调用这个公共方法呢？
     * 之前调用方法都是创建本类对象调用，但是单例无法在外部创建本类对象
     *
     * 解决方案：我们可以将公共方法设置为静态方法，这样就可以被类名直接调用
     * 需要注意：本类中的对象也只能设置为静态，因为静态只能调用静态*/
    private static MySingle single = new MySingle();
/*构造方法私有化的原因：为了防止外界随意调用（实例化/new）本类对象*/
    private MySingle() {
    }

    public static MySingle getSingle() {
        return single;
    }
}
